/**
 * 
 */
package com.ph.shopping.facade.mapper;

import com.ph.shopping.common.core.base.BaseMapper;
import com.ph.shopping.facade.agent.entity.Agent;
import com.ph.shopping.facade.agent.vo.AgentBalanceRecordVo;
import com.ph.shopping.facade.agent.vo.AgentVo;
import com.ph.shopping.facade.agent.vo.UserBalanceRecordVo;
import com.ph.shopping.facade.merchant.entity.Merchant;

import java.util.List;

/**
 * @项目：phshopping-service-agent
 *
 * @描述：
 *
 * @作者： 舒豪
 *
 * @创建时间：2017年3月10日
 *
 * @Copyright @2017 by 舒豪
 */
public interface AgentMapper extends BaseMapper<Agent> {
    /**
     * 获取下级代理用于自动关联下级
     *
     * @param agent
     * @return List<AgentVo>
     */
    List<AgentVo> getLowerAgent(Agent agent);


    /**
     * 获取代理详情
     * @param agent
     * @return agentVoDetail
     */
    AgentVo getAgentDetail(Agent agent);

    /**
     * 获取下级代理列表
     * @param agent
     * @return agentSonsList
     */
    List<AgentVo> getAgentSons(Agent agent);

    /**
     * 获取待审核列表
     * @param agent
     * @return pendingAgentVoList
     */
    List<AgentVo> getPendingAgent(Agent agent);

    /**
     * 获取代理列表
     * @param agent
     * @return agentVoList
     */
    List<AgentVo> getAgentList(Agent agent);

    /**
     * 新增代理
     * @param agent
     */
    void addAgent(Agent agent);


    /**
     * 修改代理（主要用于市级代理，如该市已有县级/社区代理，审核通过后应自动关联下级代理商）
     * @param agent
     */
    void updateAgentParentId(Agent agent);
    
    /**
     * 通过所属区域和代理商级别查找该代理商
     * @param agent
     * @return agentVo
     */
    AgentVo getAgentByArea(Agent agent);

    /**
     * 获取代理商余额记录
     * @param agentBalanceRecordVo
     * @return agentBalanceRecordVoList
     */
    List<AgentBalanceRecordVo> getBalanceAgent(AgentBalanceRecordVo agentBalanceRecordVo);

	
	/**
	 * 获取供应链和线下订单的记录----来源ph_user_balance_record表
	 * 
	 * @param userBalanceVo
	 */
	List<UserBalanceRecordVo> getUserBalanceRecordVoList(UserBalanceRecordVo userBalanceRecordVo);

	
	/**
	 * 获取充值和线上订单记录----来源ph_member_charge_record表排除供应链的类型
	 * 
	 * @param userBalanceVo
	 */
	List<UserBalanceRecordVo> getUserChargeRecordVoList(UserBalanceRecordVo userBalanceRecordVo);


    /**
     * 新增代理商的余额账户默认给他余额设置为0  ph_user_balance
     *
     * @param agent
     * @return
     */
    public int addAgentBalance(Agent agent);

}
